aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts')
-rw-r--r--src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts b/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts
new file mode 100644
index 0000000..485edf4
--- /dev/null
+++ b/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts
@@ -0,0 +1,17 @@
+import { checkScope } from '$lib/auth';
+import { redirect } from '@sveltejs/kit';
+
+export const load = async (e) => {
+ const scopes = e.params.scopes
+ .split(' ')
+ .flatMap((v) => v.split(','))
+ .flatMap((v) => v.split('+'))
+ .filter((v) => v);
+ const session = await e.locals.auth();
+ const hasScopes: string[] = session.tokens.scope?.split(' ') ?? [];
+ if (checkScope(session, scopes, false)) throw redirect(303, '../..');
+ else
+ return {
+ missingScopes: scopes.filter((scope) => !hasScopes.includes(scope)),
+ };
+};